home *** CD-ROM | disk | FTP | other *** search
/ Shareware Games Galore! / Shareware Games Galore!.iso / arcade / gameser5 / blackbox.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  4.9 KB  |  124 lines

  1. 0  KEY OFF
  2. 100  GOSUB 770
  3. 110  RANDOMIZE VAL(RIGHT$(TIME$,2))
  4. 120  CLS:GOSUB 1190:DEF FNR(Z)=INT(8*RND(1)+1)
  5. 130  E=2:GOSUB 1270:LOCATE 23,32:INPUT ;N$
  6. 140  IF N$="" THEN N$="5":E=3:GOSUB 1270
  7. 150  IF N$<"1" OR N$>"9" THEN E=10:GOSUB 1270:GOTO 130
  8. 160  N=VAL(N$):IF N<2 OR N>10 THEN E=10:GOSUB 1270:GOTO 130
  9. 170  FOR J=0 TO 9: FOR I=0 TO 9:B(I,J)=0: NEXT I:NEXT J
  10. 180  FOR I=1 TO N
  11. 190  X=FNR(1): Y=FNR(1): IF B(X,Y)=1 THEN 190
  12. 200  B(X,Y)=1:NEXT I
  13. 210  S=0:C=0
  14. 220  LOCATE 25,1:PRINT "SCORE:";100-S;:LOCATE 1
  15. 230  E=4:GOSUB 1270:LOCATE 23,28:INPUT ;R$
  16. 240  IF R$="END" THEN END
  17. 250  IF R$="" THEN 540
  18. 260  IF R$<"1" OR R$>"9" THEN 220
  19. 270  R=VAL(R$)
  20. 280  IF R<1 OR R>32 THEN 220
  21. 290  ON (R-1)\8+1 GOTO 300,310,320,330
  22. 300  X=0   :Y=R   :U=1 :V=0 :GOTO 340    'LEFT SIDE
  23. 310  X=R-8 :Y=9   :U=0 :V=-1:GOTO 340    'BOTTOM
  24. 320  X=9   :Y=25-R:U=-1:V=0 :GOTO 340    'RIGHT SIDE
  25. 330  X=33-R:Y=0   :U=0 :V=1              'TOP
  26. 340  X1=X+U:Y1=Y+V
  27. 350  IF U=0 THEN X2=X1-1: X3=X1+1: Y2=Y1: Y3=Y1: GOTO 370
  28. 360  Y2=Y1-1:Y3=Y1+1: X2=X1: X3=X1
  29. 370  ON 8*B(X1,Y1)+B(X2,Y2)+2*B(X3,Y3)+1 GOTO 390,400,410,400
  30. 380  LOCATE 25,13:PRINT "   ABSORBED   ";:S=S+1:Z$=" A":GOTO 1380
  31. 390  X=X1: Y=Y1: GOTO 440
  32. 400  Z=1: GOTO 420
  33. 410  Z=-1
  34. 420  IF U=0 THEN U=Z:V=0:GOTO 440
  35. 430  U=0: V=Z
  36. 440  ON (X+15)\8 GOTO 480,460,490
  37. 450  STOP
  38. 460  ON (Y+15)\8 GOTO 500,340,510
  39. 470  STOP
  40. 480  Z=Y: GOTO 520
  41. 490  Z=25-Y: GOTO 520
  42. 500  Z=33-X: GOTO 520
  43. 510  Z=8+X
  44. 520  IF Z=R THEN  LOCATE 25,13:PRINT "   REFLECTED  ";:S=S+1:Z$=" R":GOTO 1380
  45. 530  LOCATE 25,13:PRINT USING "CAME OUT AT ##";Z;:LOCATE 1:S=S+2:Z$=RIGHT$(STR$(Z),2):GOTO 1380
  46. 540  E=5:GOSUB 1270
  47. 550  X=4:Y=4
  48. 560  Y$=CHR$(SCREEN(Y*2+3,X*3+6))
  49. 570  COLOR 31:LOCATE Y*2+3,X*3+6:PRINT Y$
  50. 580  X$=INKEY$:IF X$="" THEN 580
  51. 590  IF ASC(X$)=27 THEN END
  52. 600  IF LEN(X$)>1 THEN COLOR 7:E=6:GOSUB 1270:GOTO 580
  53. 610  COLOR 7:E=5:GOSUB 1270
  54. 620  Y1=Y:X1=X
  55. 630  LOCATE 25,1:PRINT "SCORE:";100-S;:LOCATE 1
  56. 640  IF X$="8" THEN Y1=Y-1:IF Y1<1 THEN Y1=8
  57. 650  IF X$="2" THEN Y1=Y+1:IF Y1>8 THEN Y1=1
  58. 660  IF X$="4" THEN X1=X-1:IF X1<1 THEN X1=8
  59. 670  IF Y$="*" THEN COLOR 15 ELSE COLOR 7
  60. 680  IF X$="6" THEN X1=X+1:IF X1>8 THEN X1=1
  61. 690  LOCATE Y*2+3,X*3+6:PRINT Y$
  62. 700  IF X$="5" THEN 740
  63. 710  IF X$=CHR$(13) THEN COLOR 7:GOTO 220
  64. 720  X=X1:Y=Y1
  65. 730  GOTO 560
  66. 740  IF B(X,Y)=0 THEN E=7:GOSUB 1270:S=S+5:GOTO 560
  67. 750  IF Y$="<UNK! {FE22}> THEN Y$="*":C=C+1:LOCATE Y*2+3,X*3+6:COLOR 15:PRINT Y$:COLOR 7:IF C<N THEN E=8:GOSUB 1270:GOTO 570 ELSE E=9:GOSUB 1270:GOTO 1430
  68. 760  GOTO 560
  69. 770  WIDTH 40:SCREEN 0,0,0,1:CLS:COLOR 15:LOCATE 1,15,0
  70. 780  PRINT "BLACK BOX":COLOR 7:PRINT
  71. 790  PRINT "The BLACK BOX is an 8 X 8 square in":PRINT "which several atoms are hidden.":PRINT
  72. 800  PRINT "The object of the game is to discover"
  73. 810  PRINT "the position of the atoms by projecting"
  74. 820  PRINT "rays at them from the sides of the box":PRINT "and noticing how these rays react.":PRINT
  75. 830  PRINT "Rays may be deflected, reflected, or":PRINT "absorbed by the atoms in the box.":PRINT:PRINT "You send rays into the box from any of"
  76. 840  PRINT "32 spots along the sides of the box."
  77. 850  SCREEN 0,0,0,0:GOSUB 1020:SCREEN 0,0,1,0:CLS
  78. 860  PRINT "The path of a ray is governed by the":PRINT "following rules:":PRINT
  79. 870  PRINT "A rays that strikes an atom directly is":PRINT "absorbed.":PRINT
  80. 880  PRINT "A ray that hits an atom to one side is"
  81. 890  PRINT "diverted 90 degrees to that side.":PRINT
  82. 900  PRINT "A ray aimed between two atoms one":PRINT "square apart is reflected.":PRINT
  83. 910  PRINT "Rays otherwise travel in straight lines."
  84. 920  PRINT:PRINT "You will be told whether the ray hits":PRINT "an atom, is reflected, or comes out."
  85. 930  PRINT "If the ray comes out, you'll be told":PRINT "where.":PRINT
  86. 940  SCREEN 0,0,1,1:GOSUB 1020:SCREEN 0,0,0,1:CLS
  87. 950  PRINT "You begin by specifing how many atoms"
  88. 960  PRINT "are to be in the BLACK BOX."
  89. 970  PRINT:PRINT "At any time you may guess an atom's"
  90. 980  PRINT "location by pressing RETURN rather than":PRINT "entering one of the spot numbers."
  91. 990  PRINT "Then move the blinking cursor to the":PRINT "place where you believe an atom to be":PRINT "and press the '5' key on the keypad."
  92. 1000  PRINT:PRINT "Press the RETURN key to return to":PRINT "shooting rays.":PRINT:PRINT "You begin with a high score which":PRINT "decreases with each additional clue you":PRINT "need to solve the BLACK BOX."
  93. 1010  SCREEN 0,0,0,0:GOSUB 1020:RETURN
  94. 1020  LOCATE 25,1:PRINT "      Press any key to continue.       ";:LOCATE 1,1
  95. 1030  A$=INKEY$:IF A$="" THEN 1030 ELSE CLS:RETURN
  96. 1190  SCREEN 0,0,1,0:CLS:LOCATE 1,15:COLOR 15:PRINT "BLACK  BOX":COLOR 7:LOCATE 3
  97. 1200  PRINT       "       32 31 30 29 28 27 26 25"
  98. 1210  PRINT       "      VARPTRSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDCOLOR"
  99. 1220  FOR I=1 TO 8
  100. 1230  PRINT USING "     #CALL <UNK! {FE20}> <UNK! {FE20}> <UNK! {FE20}> <UNK! {FE20}> <UNK! {FE20}> <UNK! {FE20}> <UNK! {FE20}> <UNK! {FE20}>CALL##";I,25-I
  101. 1240  PRINT       "      CALL                        CALL":NEXT I
  102. 1250  LOCATE 20:PRINT"      CLSSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND'"
  103. 1260  PRINT       "        9 10 11 12 13 14 15 16":SCREEN 0,0,1,1:RETURN
  104. 1270  LOCATE 23,1:ON E GOTO 1280,1290,1300,1310,1320,1330,1340,1350,1360,1370
  105. 1280  PRINT "                                       ";:LOCATE 1:RETURN
  106. 1290  PRINT "   HOW MANY ATOMS IN THE BOX           ";:LOCATE 1:RETURN
  107. 1300  PRINT "           I'LL ASSUME FIVE.           ";:LOCATE 1:RETURN
  108. 1310  PRINT "       WHICH RAY POSITION              ";:LOCATE 1:RETURN
  109. 1320  PRINT "MOVE THE CURSOR WITH THE NUMERIC KEYPAD";:LOCATE 1:RETURN
  110. 1330  PRINT "   Please press the  ";:COLOR 15:PRINT"NUM LOCK";:COLOR 7:PRINT"  key.    ";:FOR I=1 TO 3000:NEXT:E=5:GOTO 1270
  111. 1340  PRINT "THE MYSTERY DEEPENS AS YOU WERE FOOLED.";:LOCATE 1:RETURN
  112. 1350  PRINT "VERY GOOD.  YOU FOUND ONE OF THE ATOMS.";:LOCATE 1:RETURN
  113. 1360  PRINT "    THAT WAS THE LAST ATOM TO FIND.    ";:LOCATE 1:RETURN
  114. 1370  PRINT "PLEASE ENTER A NUMBER FROM 2 THROUGH 10";:LOCATE 1:FOR I=1 TO 5000:NEXT:RETURN
  115. 1380  Z=R:ON (Z-1)\8+1 GOTO 1390,1400,1410,1420
  116. 1390  LOCATE Z*2+3,3:PRINT Z$:GOTO 220
  117. 1400  Z=Z-8:LOCATE 22,Z*3+5:PRINT Z$:GOTO 220
  118. 1410  Z=25-Z:LOCATE Z*2+3,36:PRINT Z$:GOTO 220
  119. 1420  Z=33-Z:LOCATE 2,Z*3+5:PRINT Z$:GOTO 220
  120. 1430  LOCATE 25,1:PRINT "     DO WANT TO PLAY ANOTHER GAME ?    ";:LOCATE 1,1
  121. 1440  A$=INKEY$:IF A$="" THEN 1440 ELSE IF A$="y" OR A$="Y" THEN 120
  122. 1450  END
  123. 1460  FOR I=1 TO 8:FOR J=1 TO 8:PRINT B(J,I);:NEXT J:PRINT:NEXT
  124.